Flow control is used to mediate access to a shared resource pool used by multiple clients. One approach to flow control is to use an extra network protocol layer to implement flow control. However, this additional layer adds complexity to the protocol stack. Another approach requires clients to predict how many requests to send, for example, based on analyzing how the resource pool responded to previous requests. For example, the clients may be initiators in the context of the iSER protocol (iSCSI extension for Remote Direct Memory Access (RDMA)). When resource usage at the target server exceeds a threshold, the target may notify clients to decrease the number of requests. However, not all clients may be able to implement the predictive capability. Another simple approach is to restrict the number of active requests for each client to a small, fixed request window. However, using a small request window may unnecessarily limit throughput when there are sufficient resources to handle a larger volume of requests.